The Packet Gateway (PGW) is a network entity that anchors subscriber devices to a wireless communications network. Generally, the PGW receives IP packets from a core network, and then sends those packets to the subscriber device via an Access Network (AN). However, before communicating the IP packets to the subscriber device, the PGW first processes the received IP packets in accordance with a well-known set of standards (i.e., 3GPP TS 23.203 V11.4.0 (2011-12) entitled “3rd Generation Partnership Project, Technical Specification Group Services and System Aspects, Policy and Charging Control Architecture”).
As defined in TS23.203, the PGW has a set of Policy and Charging Control (PCC) rules. These rules define a Policy Control and Enforcement Function (PCEF) performed at the PGW. Particularly, the PCC rules contain packet filters that classify IP packets to service data flows (SDF) and a set of services to be applied for each SDF of the packet. The packet filters classify incoming an IP packet based on the information carried by the packet's L3 header (e.g., the IP source address, the destination address, and the protocol type), as well as the information contained in the packet's L4 header (e.g., the source and destination port depending on the protocol type). Thus, for a given IP packet destined for delivery to a subscriber device, the PGW first applies the packet filters to identify the appropriate SDF for the IP packet, and then applies the SDF services to the IP packet. Some of the services that may be applied to the SDF include, but are not limited to, charging, bearer-binding, and policing.
In some cases, the IP packets are very large (e.g., video packets). Therefore, the core network may send large IP packets in fragments to the subscriber. That is, a single large IP packet may be divided into a plurality of smaller constituent IP packets referred to as “fragments.” The first fragment is commonly referred to as the “head” fragment while the remaining fragments are commonly referred to as “trailing” fragments. The processes of fragmenting facilitates the communication of large IP packets over the network; however, it also means that the subscriber device must first reassemble large IP packets from their constituent fragments before it can consume the IP packet (e.g., render or output the original IP packet to the user).
Typically, the head fragment contains the packet's L3 and L4 headers, while the trailing fragments contain only the L3 header. Therefore, upon arrival at the PGW, the PCC rules can classify the head fragment based on the L3 and L4 information and apply the appropriate services; however, the PCC rules that classify fragments based on L4 information are unable to classify the trailing fragments because those fragments are missing the L4 headers. The trailing fragments are therefore classified differently than the head fragment of the IP packet, and thus, the set of services that are applied to the head fragment is different from the services that are applied to the trailing fragments. Effectively, this means that the services applied to the complete, original IP packet, as they are derived from the services applied to the individual constituent fragments, are incorrect.
For example, consider a large fragmented video packet that should be marked for low latency based on a User Datagram Protocol (UDP) port number. Conventional PGWs would treat the head fragment of the large packet for low latency based on the L3/L4 information carried in the header of the head fragment. However, the PGWs would treat the subsequent trailing fragments as best-effort packets, instead of low latency packets, because the information needed to classify these packets would be missing. Thus, the trailing fragments would not match any of the PCC filters. Since a subscriber device must wait for all the trailing fragments to arrive before it can reassemble and render the complete, original IP packet, the original IP packet would effectively not be treated as a low latency packet.
A conventionally configured PGW generally handles such situations in one of two ways. Particularly, before classification, the PGW can either fully reassemble the original IP packet and apply the services, or it can virtually reassemble the fragments and apply the services. With full reassembly, the PGW queues each received fragment as it is received. After all the constituent fragments of the complete IP packet have been received, the PGW reassembles the fragments, classifies the packet, and then applies the appropriate services on the reassembled packet. Once the services are applied, the PGW re-fragments the IP packet before sending the fragments to the subscriber device. With virtual reassembly, the PGW also queues each of the constituent fragments upon receipt of the fragments but does not reassemble the fragments. Instead, after all fragments have been received, the PGW classifies the head fragment, and then subjects each of the queued fragments to the services defined by the PCC rule that matches the information contained in the head fragment. The PGW then forwards the treated fragments on to the subscriber device.
Both of these conventional approaches (i.e., full and virtual reassembly at the PGW) allow the PGW to apply the same services to all of the constituent fragments of an IP packet. However, these approaches are also problematic. Specifically, both conventional methods increase network latency because they consume large amounts of resources at the PGW. Additionally, the queued fragments are sent by the PGW non-sequentially relative to other un-fragmented IP packets that are being sent to the subscriber device. A more desirable behavior is for the PGW to send fragments to the subscriber device after applying correct services on all fragments without having to first queue the packets.